import { makePy } from './pinyin'
import store from '@/store'
export let isAndroid = navigator.userAgent.indexOf('Android') >= 0 ? 1 : 0
/**
 * 获取链接后面的参数
 * @param String name 需要获取的参数名字
 */
export function getQueryString (name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
  var r = window.location.search.substr(1).match(reg)
  return r != null ? unescape(r[2]) : null
}
/**
 * 格式化时间
 * @param {*} dateObj
 * @param {*} FMT
 */
export function formatDate (dateObj, FMT) {
  var fmt = FMT
  var o = {
    'M+': dateObj.getMonth() + 1, // 月份
    'd+': dateObj.getDate(), // 日
    'h+': dateObj.getHours(), // 小时
    'm+': dateObj.getMinutes(), // 分
    's+': dateObj.getSeconds(), // 秒
    'q+': Math.floor((dateObj.getMonth() + 3) / 3), // 季度
    'S': dateObj.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (dateObj.getFullYear() + '').substr(4 - RegExp.$1.length))
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
  }
  return fmt
}
/**
 * 计算两个时间的天数差
 * @param {*} date1
 * @param {*} date2
 */
export function countDate (date1, date2) {
  // ios new Date() 参数为 yyyy/MM/dd
  if (!isAndroid) {
    date1 = date1.replace(/-/g, '/')
    date2 = date2.replace(/-/g, '/')
  }
  let Date1 = new Date(date1)
  let Date2 = new Date(date2)
  return (Date1.getTime() - Date2.getTime()) / (1000 * 60 * 60 * 24)
}
export function formatNum (num) {
  return num > 9 ? num : '0' + num
}
/**
 * 计算两个时间的时间差
 * @param {*} thisdate
 * @param {*} addday
 * @returns
 */
export function getAddDate (thisdate, addday) {
  if (!isAndroid) {
    thisdate = thisdate.replace(/-/g, '/')
  }
  let mydate = new Date(thisdate)
  mydate.setDate(mydate.getDate() + addday)
  let year = mydate.getFullYear()
  let month = mydate.getMonth() + 1
  let day = mydate.getDate()
  let endtime = year + '-' + formatNum(month) + '-' + formatNum(day)
  return endtime
}
/**
 *
 * @param {Object} list 需要过滤的列表
 * @param {Object} filterObj { key1: [11, 2, 33], key2: [11, 111, 11111] }
 */
export function filterList (list, filterObj) {
  var newList = []
  list.forEach(item => {
    for (let key in filterObj) {
      let filterArr = filterObj[key]
      filterArr.forEach(filterValue => {
        if (item[key] && (item[key] + '') === (filterValue + '')) {
          newList.push(item)
        }
      })
    }
  })
  return newList
}
/**
 * 按照首字母格式化数据
 * @param {*} list
 * @param {*} item
 */
export function getPyData (list, key) {
  let data = {}
  list.sort((a, b) => {
    return makePy(a[key].charAt(0))[0].toUpperCase() < makePy(b[key].charAt(0))[0].toUpperCase() ? -1 : 1
  })
  list.forEach(item => {
    let initial = makePy(item[key].charAt(0))[0].toUpperCase()
    if (initial >= 'A' && initial <= 'Z') {
      if (!data[initial]) {
        data[initial] = []
      }
      data[initial].push(item)
    }
  })
  return data
}
/**
 * 获取元素距离文档顶部的距离
 *
 * @export
 * @param {*} e
 * @param {*} doc
 * @returns
 */
export function getTop (e, doc) {
  let offset = e.offsetTop
  let Doc = doc || null
  if (e.offsetParent === Doc) {
    return offset
  } else {
    offset += getTop(e.offsetParent, Doc)
  }
}
/**
 * 格式化金额
 * @param {*} th
 */
export function limitMoney (money) {
  var regStrs = [
    ['^0(\\d+)$', '$1'], // 禁止录入整数部分两位以上，但首位为0
    ['[^\\d\\.]+$', ''], // 禁止录入任何非数字和点
    ['\\.(\\d?)\\.+', '.$1'], // 禁止录入两个以上的点
    ['^(\\d+\\.\\d{2}).+', '$1'] // 禁止录入小数点后两位以上
  ]
  var newMoney = money + ''
  for (var i = 0; i < regStrs.length; i++) {
    var reg = new RegExp(regStrs[i][0])
    newMoney = newMoney.replace(reg, regStrs[i][1])
  }
  return newMoney
}
// 初始化单个行程信息
export function initEvectionItem () {
  let userInfo = store.state.userInfo
  let { userNum, userName, companyName, companyNum, depName, depNum } = userInfo
  let nowDate = formatDate(new Date(), 'yyyy-MM-dd')
  // console.log(nowDate)
  let item = {
    expenseType: '', // 费用类型id
    travelPerson: [{ // 出差人
      userName,
      userNum,
      companyName,
      companyNumber: companyNum, // 额度归属公司编码
      depNumber: depNum, // 额度归属部门编码
      depName: depName // 部门名称
    }],
    startTime: getAddDate(nowDate, 1), // 开始时间
    endTime: getAddDate(nowDate, 4), // 结束时间
    from: '武汉', // 出发地点
    to: '深圳', // 目的地点
    vehicle: '10' // 交通工具（飞机=10,火车=20,高铁=21,轮船=30,汽车=40,其它=50）
  }
  return item
}
/**
 * 根据单号获取单据简码
 * @param {*} billNum
 */
export function getJMByBillNum (billNum) {
  if (billNum.indexOf('FB201') > -1) {
    return 'FB'
  } else if (billNum.indexOf('FS201') > -1) {
    return 'FS'
  } else if (billNum.indexOf('SX201') > -1) {
    return 'SX'
  } else if (billNum.indexOf('J201') > -1) {
    return 'JK'
  } else if (billNum.indexOf('HK201') > -1) {
    return 'HK'
  } else if (billNum.indexOf('NB201') > -1) {
    return 'NB'
  } else if (billNum.indexOf('DS201') > -1) {
    return 'DS'
  } else if (billNum.indexOf('CS201') > -1) {
    return 'CS'
  } else if (billNum.indexOf('CB20') > -1) {
    return 'CB20'
  } else if (billNum.indexOf('CP201') > -1) {
    return 'CP'
  } else if (billNum.indexOf('NP201') > -1) {
    return 'NP'
  } else {
    return ''
  }
}

/*
 * 单据简码配置
借款单      JK    例：027DC01J201708050001
还款单      HK    例：027DC01H201708050001
费用申请单  FS   例:027DC01FS201708050001
费用报销单  FB   例：027DC01FB201708050001
出差申请单  CS   例：027DC01CS201708050001
出差报销单  CB20   例：027DC01CB201708050001
电脑申请单  DS   例：027DC01DS201708050001
电脑报销单  NB   例：027DC01NB201708050001
事项申请单  SX   例：027DC01SX201708050001
无合同付款单NP   例：027DC01NP201708050001
合同(战略合同 订单) HT 例：027DC01HT201708050001
调整合同    TZ    例：027DC01FS201708050001TZ01
补充合同    BC    例：027DC01FS201708050001BC01
合同结算    JS    例：027DC01HT201708050001JS01
合同付款单  CP    例：027DC01CP201708050001
*/
export function getBillConfig () {
  return {
    // 申请类
    'FS': {
      title: '费用申请单',
      icon: 'icon-list-feiyongsenqin',
      method: 'getOtherExpenseBills',
      BSID: 'BC_OtherExpense'
    },
    'CS': {
      title: '出差申请单',
      icon: 'icon-list-feiyongsenqin',
      method: 'getEvectionReqBills',
      BSID: 'BC_EvectionReq'
    },
    'SX': {
      title: '事项申请单',
      icon: 'icon-list-sixiang',
      method: 'getProjectApprovals',
      BSID: 'CT_ProjectApproval'
    },
    'DS': {
      title: '电脑申请单',
      icon: 'icon-list-diannaosenqin',
      method: 'getcomputerApplications',
      BSID: 'CT_ComputerApplication'
    },
    // 报销类
    'FB_TX': {
      title: '通讯费报销单',
      icon: 'icon-list-tongxun',
      method: 'getBizAccountBills',
      expenseType: 'tel'
    },
    'FB_CL': {
      title: '车辆费报销单',
      icon: 'icon-list-celiang',
      method: 'getBizAccountBills',
      expenseType: 'car'
    },
    'FB_JT': {
      title: '交通费报销单',
      icon: 'icon-list-jiaotong',
      method: 'getBizAccountBills',
      expenseType: 'bus'
    },
    'FB': {
      title: '费用报销单',
      icon: 'icon-list-qitabaoxiao',
      method: 'getBizAccountBills',
      expenseType: 'isIndAmount',
      BSID: 'BC_BizAccount'
    },
    'CB20': {
      title: '差旅报销单',
      icon: 'icon-list-qitabaoxiao',
      method: 'listTravelBillWK',
      BSID: 'BC_TravelAccount'
    },
    'NB': {
      title: '电脑报销单',
      icon: 'icon-list-diannaobaoxiao',
      method: 'getComputerAccounts',
      BSID: 'CT_ComputerAccount'
    },
    'CP': {
      title: '合同付款单',
      icon: 'icon-list-hetongfukuan',
      method: 'getContractPayments'
    },
    'NP': {
      title: '无合同付款单',
      icon: 'icon-list-wuhetongfukuan',
      method: 'getNoContractPayments'
    },
    'JK': {
      title: '借款单',
      icon: 'icon-list-jiekuan',
      method: 'getDailyLoanBills',
      BSID: 'BC_DailyLoan'
    },
    'HK': {
      title: '还款单',
      icon: 'icon-list-jiekuan',
      method: 'getRepaymentBills'
    },
    // 记一笔
    'JYB': {
      title: '记一笔',
      icon: '',
      method: 'getNoteTakings'
    }
  }
}
